#include <stdio.h>
#include <stdlib.h>

static int randseed = 1;

void srandom(int seed) {
    randseed = seed;
}
/*#if sparc && !__SUNPRO_C8*/
#ifdef notdef
#ifdef __svr4__
#define RANDOM "random"
#define RANDSEED "randseed"
#else
#define RANDOM "_random"
#define RANDSEED "_randseed"
#endif
asm("\
        .global " RANDOM "                      ;\
        
    " RANDOM ":                             ;\
        sethi   %hi(16807), %o1                 ;\
        wr      %o1, %lo(16807), %y             ;\
        sethi  %hi(" RANDSEED "), %g1          ;\
        ld     [%g1 + %lo(" RANDSEED ")], %o0  ;\
        andcc  %g0, 0, %o2                     ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %o0, %o2                   ;\
        mulscc  %o2, %g0, %o2                   ;\
        rd      %y, %o3                         ;\
        srl     %o2, 16, %o1                    ;\
        set     0xffff, %o4                     ;\
        and     %o4, %o2, %o0                   ;\
        sll     %o0, 15, %o0                    ;\
        srl     %o3, 17, %o3                    ;\
        or      %o3, %o0, %o0                   ;\
        addcc   %o0, %o1, %o0                   ;\
        bneg    1f                              ;\
        sethi  %hi(0x7fffffff), %o1            ;\
        retl                                    ;\
        st     %o0, [%g1 + %lo(" RANDSEED ")]  ;\
    1:                                              ;\
        or      %o1, %lo(0x7fffffff), %o1       ;\
        add     %o0, 1, %o0                     ;\
        and     %o1, %o0, %o0                   ;\
        retl                                    ;\
        st     %o0, [%g1 + %lo(" RANDSEED ")] ");

#else
int random( randseed ) {
    register int x = randseed;
    register int hi, lo, t;

    hi = x / 127773;
    lo = x % 127773;
    t = 16807 * lo - 2836 * hi;
    if (t <= 0)
    t += 0x7fffffff;
    randseed = t;
    return (t);
}
#endif

int main() {
    printf("\n%d", random( 11251317 ) % 977);
    printf("\n%d", random( 11251318 ) % 977);
    printf("\n%d", random( 11251319 ) % 977);
    printf("\n");
    system("PAUSE");
}
